home *** CD-ROM | disk | FTP | other *** search
/ Graphics Plus / Graphics Plus.iso / general / fractal / kaos.lha / modellib / d4genfn_def.c < prev    next >
Encoding:
Text File  |  1990-01-16  |  2.6 KB  |  115 lines

  1.  
  2. int d4genfn_init()
  3. {
  4.     title_label = "D4 Generating Function";
  5.  
  6.     mapping_on = 0;
  7.     inverse_on = 1;
  8.     fderiv_on = 0;
  9.     enable_polar = 1;
  10.     enable_period = 0;
  11.     
  12.     var_dim = 4;
  13.     param_dim = 5;
  14.     func_dim = 2;
  15.     (void) malloc_init();
  16.  
  17.     var_label[0] = "x";
  18.     var_label[1] = "y";
  19.     var_label[2] = "z";
  20.     var_label[3] = "w";
  21.     var_polar_label[0] = "r";
  22.     var_polar_label[1] = "rp";
  23.     var_polar_label[2] = "theta";
  24.     var_polar_label[3] = "thetap";
  25.     param_label[0] = "Ls";
  26.     param_label[1] = "La";
  27.     param_label[2] = "A";
  28.     param_label[3] = "B";
  29.     param_label[4] = "C";
  30.     func_label[0] = "Energy";
  31.     func_label[1] = "AngMom";
  32.  
  33.     param[0] = 2;
  34.     param[1] = 0;
  35.     param[2] = 0;
  36.     param[3] = 0;
  37.     param[4] = 0;
  38.  
  39.     var_i[0] = 0;
  40.     var_i[1] = 0;
  41.     var_i[2] = 0;
  42.     var_i[3] = 0;
  43.     var_polar_i[0] = 0;
  44.     var_polar_i[1] = 0;
  45.     var_polar_i[2] = 0;
  46.     var_polar_i[3] = 0;
  47.  
  48.     param_min[0]= -5; param_max[0]= 5;
  49.     param_min[1]= -5; param_max[1]= 5;
  50.     param_min[2]= -5; param_max[2]= 5;
  51.     param_min[4]= -5; param_max[3]= 5;
  52.     param_min[5]= -5; param_max[4]= 5;
  53.  
  54.     var_min[0]= -5; var_max[0]= 5;
  55.     var_min[1]= -5; var_max[1]= 5;
  56.     var_min[2]= -5; var_max[2]= 5;
  57.     var_min[3]= -5; var_max[3]= 5;
  58.  
  59.     var_polar_min[0]= -5; var_polar_max[0]= 5;
  60.     var_polar_min[1]= -5; var_polar_max[1]= 5;
  61.     var_polar_min[2]= -pi; var_polar_max[2]= pi;
  62.     var_polar_min[3]= -5; var_polar_max[3]= 5;
  63.  
  64.     f_p = d4genfn_f;
  65.     func_p = d4genfn_func;
  66. }
  67.  
  68. int d4genfn_f(f,index,x,p,t,dim)
  69. int index,dim;
  70. double f[],x[],p[],t;
  71. {
  72.     double v0sq,v1sq,v2sq,v3sq;
  73.     v0sq = x[0] * x[0];
  74.     v1sq = x[1] * x[1];
  75.     v2sq = x[2] * x[2];
  76.     v3sq = x[3] * x[3];
  77.     if(index!=2){
  78.         f[0] = p[0] * x[1] - p[1] * x[1]
  79.         + p[2] * x[1] * (v0sq+v1sq+v2sq+v3sq) 
  80.         + p[3] * x[1] * (v2sq+v3sq)
  81.         + p[4] * ( -x[1] * (v2sq-v3sq) +  2 * x[0] * x[2] * x[3]);
  82.         f[2] = p[0] * x[3] - p[1] * x[3]
  83.         + p[2] * x[3] * (v0sq+v1sq+v2sq+v3sq) 
  84.         + p[3] * x[3] * (v0sq+v1sq)
  85.         + p[4] * ( -x[3] * (v0sq-v1sq) +  2 * x[0] * x[1] * x[2]);
  86.     }
  87.     if(index !=1){
  88.         f[1] = p[0] * x[0] + p[1] * x[0]
  89.         + p[2] * x[0] * (v0sq+v1sq+v2sq+v3sq) 
  90.         + p[3] * x[0] * (v2sq+v3sq)
  91.         + p[4] * ( x[0] * (v2sq-v3sq) +  2 * x[1] * x[2] * x[3]);
  92.         f[1] = -f[1];
  93.         f[3] = p[0] * x[2] + p[1] * x[2]
  94.         + p[2] * x[2] * (v0sq+v1sq+v2sq+v3sq) 
  95.         + p[3] * x[2] * (v0sq+v1sq)
  96.         + p[4] * ( x[2] * (v0sq-v1sq) +  2 * x[0] * x[1] * x[3]);
  97.         f[3] = -f[3];
  98.     }
  99. }
  100. int d4genfn_func(f,x,p,t,dim)
  101. double f[],x[],p[],t;
  102. int dim;
  103. {
  104.         double v0sq,v1sq,v2sq,v3sq;
  105.  
  106.     /* energy and angular momentum are defined in euclidean
  107.     coordinates */
  108.     v0sq = x[0] * x[0];
  109.     v2sq = x[2] * x[2];
  110.     f[0] = 0.5 * (( x[1] * x[1] + x[3] * x[3]) - p[0]*(v0sq+v2sq) + 0.5 *
  111.     (v0sq+v2sq)*(v0sq+v2sq) - p[1] * v0sq* v2sq);
  112.     f[1] =  x[1] * x[2] - x[0] * x[3];
  113.     
  114. }
  115.